package com.inetools.gwetons.client;

import com.google.gwt.dom.client.Element;
import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
import com.google.gwt.event.logical.shared.HasBeforeSelectionHandlers;
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HasHandlers;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IndexedPanel;
import com.google.gwt.user.client.ui.Widget;

public interface TabPanelProviderService 
extends HasBeforeSelectionHandlers<Integer>, HasSelectionHandlers<Integer>, HasHandlers, EventListener, 
HasWidgets, IndexedPanel, Iterable<Widget>
{
	// Methods from common interfaces between TabLayoutPanel class and DecoratedTabPanel class
//	public void add( Widget w);
	public void add( Widget w, String text);
	public void add( Widget w, String text, boolean asHtml);
	public void add( Widget w, Widget tab);
	public HandlerRegistration addBeforeSelectionHandler( BeforeSelectionHandler<Integer> handler);
	public HandlerRegistration addSelectionHandler( SelectionHandler<Integer> handler);
//	public void clear();
	public int getSelectedIndex();
//	public Widget getWidget( int index);
//	public int getWidgetIndex( Widget widget);
	public void insert( Widget widget, String tabText, boolean asHTML, int beforeIndex);
	public void insert( Widget widget, java.lang.String tabText, int beforeIndex);
	public void insert( Widget widget, Widget tabWidget, int beforeIndex);
//	public Iterator<Widget> iterator();
//	public boolean remove( int index);
//	public boolean remove( Widget widget);
	public void selectTab( int index);
	
	// non-static Methods from common super Composit class or higher between TabLayoutPanel class and DecoratedTabPanel class
	public boolean isAttached();
	public void onBrowserEvent( Event event);
	
	public void fireEvent( GwtEvent<?> event);
	public Object getLayoutData();
	public Widget getParent();
	public void removeFromParent();
	public void setLayoutData( Object layoutData);
	public void sinkEvents( int eventBitsToAdd);
	
	public void addStyleDependentName( String styleSuffix);
	public void addStyleName( String style);
	public void ensureDebugId( String id);
	public int getAbsoluteLeft();
	public int getAbsoluteTop();
	public Element getElement();
	public int getOffsetHeight();
	public int getOffsetWidth();
	public String getStyleName();
	public String getStylePrimaryName();
	public String getTitle();
	public boolean isVisible();
	public void removeStyleDependentName( String styleSuffix);
	public void removeStyleName( String style);
	public void setHeight( String height);
	public void setPixelSize( int width, int height);
	public void setSize( String width, String height);
	public void setStyleName( String style);
	public void setStylePrimaryName( String style);
	public void setTitle( String title);
	public void setVisible( boolean visible);
	public void setWidth(java.lang.String width);
	public String toString();
	public void unsinkEvents( int eventBitsToRemove);
}
